#include "sql_list.h"

// 初始化顺序表
int sql_list_init(UDP_client_sql ** list)
{
    //动态空间 顺序表结构
    *list = (UDP_client_sql *)malloc(sizeof(UDP_client_sql));
    if (NULL == *list)
    {
        perror("malloc");
        exit(-1);
    }
    //动态空间 顺序表数据
    (*list)->data = (UDP_client_data *)malloc(sizeof(UDP_client_data) * USER_MAX);
    if (NULL == (*list)->data)
    {
        perror("malloc");
        exit(-1);
    }
    //初始化数值
    (*list)->len = 0;
    return 0;
}

// 插入
int sql_list_insert(UDP_client_sql * list ,  UDP_client_data data , int pos )
{
    if (NULL == list)
    {
        printf("list is null\n");
        return EOF;
    }
    if (USER_MAX <= list->len)
    {
        printf("list is full\n");
        return EOF;
    }
    //尾插
    list->data[pos-1]=data;
    list->len++;
}


// 删除
int sql_list_delete(UDP_client_sql * list , int pos );

// 查找   找到则 返回 用户的下标 没找到则 返回 -1
int sql_list_find(UDP_client_sql * list , UDP_client_data data )
{
    if (NULL == list)
    {
        printf("list is null\n");
        return EOF;
    }
    for (int i = 0; i < list->len; i++)
    {
        if (!sql_list_cmp(list->data[i] , data))
        {
            return i;
        }
    }
    return EOF;
}

// 修改
int sql_list_set_name(UDP_client_sql * list , int index , char * name)
{
    if (NULL == list)
    {
        printf("list is null\n");
        return EOF;
    }
    strcpy(list->data[index].name , name);
    return 0;
}


// 比较数据
int sql_list_cmp(UDP_client_data D1 , UDP_client_data D2 )
{
    int flag = 0;
    //判定IP
    if (D1.data.sin_addr.s_addr == D2.data.sin_addr.s_addr)
    {
        flag++;
    }
    if (D1.data.sin_port == D2.data.sin_port)
    {
        flag++;
    }
    if (flag == 2)
    {
        return 0;
    }
    return EOF;
}